package com.tzstcl.sys.user.mapper;

import com.tzstcl.base.mapper.BaseMapper;
import com.tzstcl.sys.user.model.SysUser;
import com.tzstcl.sys.user.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author haocj
 * 系统用户数据接口
 */
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {

    SysUser findByNameOrPass(SysUser sysUser);

    Integer delete(@Param("ids") String[] ids);

    List<SysUser> findList(SysUser sysUser);

    /**
     *
     * 批量增加用户表
     * @param sysUserList
     * @author guohy
     * @date 2019年08月08日
     * @return Integer 插入的记录数
     */
    Integer insertBatch(List<SysUser> sysUserList);

    /**
     * @description 根据用户名查询密码
     * @author guohy
     * @date 2019/8/13-14:49
     * @param sysUser
     * @return com.seasoft.sys.user.model.SysUser
     */
    SysUser compareUser(SysUser sysUser);
    List<UserInfo> selectUserInfo(UserInfo sysUser);

    /**
     * @description 查询当前用户组织下的所有成员
     * @author guohy
     * @date 2019/8/27-14:46
     * @param sysUser
     * @return com.seasoft.sys.user.model.SysUser
     */
    List<SysUser> accountList(SysUser sysUser);

    /**
     * @description 查询当前组织下的账号基本信息
     * @author guohy
     * @date 2019/8/29-16:47
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getDataForSelectByDept(Long deptId);

    /**
     * @description 通讯录
     * @author guohy
     * @date 2019/8/30-10:16
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getAddressBook(Long deptId);

    /**
     * @description 所属组织下的通讯录
     * @author guohy
     * @date 2019/8/30-10:38
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getDeptAddressBook(Long deptId);

    /**
     * @description 获取当前部门下的人员信息
     * @author guohy
     * @date 2019/9/12-16:05
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getDeptUserList(Long deptId);

    /**
     * @description 修改密码
     * @author guohy
     * @date 2019/9/17-20:31
     * @param sysUser
     * @return java.lang.Integer
     */
    Integer updatePassword(SysUser sysUser);

    SysUser findByNameIgnoreDelFlag(SysUser sysUser);
}
